You will notice that even though your next OTBind to that port was successful, the address returned wasn't what you asked for, because of the lag. The X/Open spec states that you have to explicitly check the address returned.
Although a MacTCP emulation should return a duplicateSocket error, on some older version of OT it doesn't; you should check the address returned when using MacTCP, too.
The bottom line is: always check your returned address.
If you are using the native Open Transport API, there is a way around the two-minute delay. You can issue an option management call before you do the bind to enable the IP_REUSEADDR option.
Be aware, though, that with the IP_REUSEADDR option, at most only
one endpoint in an unconnected state (i.e., listening) may be bound to a port.
There may be more endpoints, however, already connected or closing,
which are bound to the same port.
See X/OpenTransport Interface for further documentation.